#include "HMC6352.h"

unsigned short read_hmc6352(void)
{
	unsigned short data;

	// Get Data コマンド送信。
	/// 書込バイト数。
	I2CWriteLength = 2;
	/// 読込バイト数。
	I2CReadLength = 0;
	/// HMC6352 のスレーブアドレス。
	I2CMasterBuffer[0] = HMC6352_ADDRESS << 1;
	/// 送信データ（データ要求コマンド'A')
	I2CMasterBuffer[1] = 'A';
	/// I2C通信処理。
	I2CEngine();

	// 読込。
	/// 書込バイト数。
	I2CWriteLength = 1;
	/// 読込バイト数。
	I2CReadLength = 2;
	/// HMC6352 のスレーブアドレス。
	I2CMasterBuffer[0] = (HMC6352_ADDRESS << 1) | RD_BIT;
	/// I2C通信処理。
	I2CEngine();

	data = (unsigned short)I2CSlaveBuffer[0];
	data = (data << 8) + (unsigned short)I2CSlaveBuffer[1];

	return data;
}

void calibrate_hmc6352(void)
{
	// キャリブレーション開始。
	startCalibration_hmc6352();
	// 時間待ち。

	// キャリブレーション終了。
	endCalibration_hmc6352();

}

void startCalibration_hmc6352(void)
{
	// Calibration開始 コマンド送信。
	/// 書込バイト数。
	I2CWriteLength = 2;
	/// 読込バイト数。
	I2CReadLength = 0;
	/// HMC6352 のスレーブアドレス。
	I2CMasterBuffer[0] = HMC6352_ADDRESS << 1;
	/// 送信データ（キャリブレーション開始コマンド'C')
	I2CMasterBuffer[1] = 'C';
	/// I2C通信処理。
	I2CEngine();
}

void endCalibration_hmc6352(void)
{
	// Calibration終了 コマンド送信。
	/// 書込バイト数。
	I2CWriteLength = 2;
	/// 読込バイト数。
	I2CReadLength = 0;
	/// HMC6352 のスレーブアドレス。
	I2CMasterBuffer[0] = HMC6352_ADDRESS << 1;
	/// 送信データ（キャリブレーション終了コマンド'E')
	I2CMasterBuffer[1] = 'E';
	/// I2C通信処理。
	I2CEngine();
}

